home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 05 Programming / DISMOD.TXT < prev    next >
Text File  |  2019-04-13  |  5KB  |  125 lines

  1.  
  2.  
  3. MODIFICATION OF LADS SUBPROGRAM 'DIS' (DISASSEMBLER)
  4. To Support Hardcopy
  5.  
  6.  
  7. Mike Davidson
  8. 74116,2507
  9.  
  10. Copyright 1985
  11. Commercial Rights Reserved
  12.  
  13.  
  14. What is LADS?
  15.  
  16.      Richard Mansfield's LADS (Label Assembler Development System) is very
  17. probably the most thoroughly documented assembler for the 6502 chip family in
  18. existence.  Not the least of its virtues is price; for less than $15, one is
  19. presented with a 450-page spiral-bound volume that includes the object code,
  20. a checksum-based editor to facilitate almost painless entry, the full,
  21. commented source code, and a highly readable tour of logic, routines,
  22. programming hints, and help.  Indeed, Mr. Mansfield conducts a one-to-one
  23. seminar, and the instruction is first rate.  Optionally, a disk may be
  24. ordered at modest cost, if entering 10K of source code, plus another 5K of
  25. object code isn't your idea of fun.  In sum, LADS is a key for almost anyone
  26. to successfully learn assembly language, and to begin producing some useful
  27. stuff in ML.
  28.  
  29. 'DIS'--The Disassembler Subprogram
  30.  
  31.      Quite obviously, disassembly and study of commercial or "professional"
  32. routines are a large part of becoming proficient in machine language.  Study
  33. of another's work is not unlike the casebook method in law, or the laboratory
  34. environment in science.  LADS includes a very fast optional disassembler.
  35.  
  36.      The present file shows how to modify this subprogram to stream
  37. disassembled code to a printer.  There are, of course, other approaches to
  38. this.  My personal preference and work habits dictate that having an entire
  39. routine in hardcopy is much easier to follow than starting and stopping screen
  40. output.  Convenience also determined that 'dis' remain a RAM-based aid rather
  41. than attempting to read files directly from disk.  As modified, a programmer
  42. may disassemble between two addresses without having to watch the equipment.
  43. The stop key is active at all times, to allow changing one's mind.  One is not
  44. obligated to use header-dictated starting addresses, but may dip into memory at
  45. any point and quit at any point.  'Dis' is also most useful for exploring ROM
  46. routines.
  47.  
  48. The Modification
  49.  
  50.      These changes presuppose that you have a machine-readable copy of all the
  51. LADS subprograms (source code), since you will be creating new object code for
  52. 'dis.'  The disassembler may NOT stand alone.  It draws upon routines and
  53. definitions elsewhere in LADS during assembly and execution, as do the present
  54. modifications.
  55.  
  56.      Line numbers have been arranged to merge with the published source code,
  57. using most BASIC merge utilities.  'Disk Merge' (VIC/64), published in the
  58. January '85 issue of Gazette, should work well.  There are others on CIS.  If
  59. you do a merge, the modifications file should be designated as primary.  To be
  60. of help to the greatest number of users, I have purposely not submitted this
  61. as a machine-specific image file.  Users may elect to convert the listing from
  62. ASCII to program with an appropriate file-conversion utility.  Dan Rothwell's
  63. 'Cruncher' (Midwest Micro) is an all-ML example for the C-64; others are
  64. available through ACCESS.  If all else fails, one COULD type it in manually.
  65. (Smile).
  66.  
  67.      Commenting is intended to resolve initial questions on logic, and may be
  68. deleted at your convenience.  I suggest that you create a separate work disk
  69. containing all the subprogram source code, leaving your master disk intact, as
  70. published.
  71.  
  72.      Questions on these modifications are always welcome via EMAIL.
  73.  
  74.  
  75.  
  76. 25 lda #147:jsr print:jsr prntcr; clr screen, cursor to line two
  77. 161 jsr prntcr:lda #<stopmess:sta temp:lda #>stopmess:sta temp+1:jsr prntmess
  78. 162 jsr prntcr:lda #63:jsr print:ldy #0:sty y; format, punc, zero counter
  79. 163 dtm1 jsr charin
  80. 164 beq dtm1
  81. 165 cmp #13;  ck for cr
  82. 166 beq dm1
  83. 167 ldy y:sta label,y:jsr print
  84. 168 iny:sty y:jmp dtm1
  85. 169 dm1 lda #0:sta label,y:jsr prntcr
  86. 170 lda #<label:sta temp:lda #>label:sta temp+1:jsr valdec
  87. 171 lda result:sta nubuf:lda result+1:sta nubuf+1
  88. 172 jsr open4;  printer channel--routine resides in subprogram 'open1'
  89. 173 inc printflag; advise lads we're sending data to printer
  90. 174 ldx #4; logical file nmbr
  91. 175 jsr chkout
  92. 176 ;
  93. 190 getbyte jsr stopkey:bne goahead:jmp fin; after keyscan, interpret result
  94. 195 goahead jsr gb:sta filen
  95. 600 alldone jsr prntcr:jsr stopck:bcc alld1:jmp fin
  96. 601 ;  stopck is a double-byte comparison between start & stop addrs
  97. 602 ;  branch occurs if result < stop, to getbyte thru alld1. otherwise, exit
  98. 603 ;  fin is lads most formal exit, at line 4390 in subprogram 'eval'
  99. 716 stopmess .byte "enter stop address":.byte 0
  100. 720 stopck sec
  101. 722 lda pmem
  102. 724 sbc nubuf
  103. 726 sta result
  104. 728 lda pmem+1
  105. 730 sbc nubuf+1
  106. 732 ora result
  107. 734 rts
  108. 750 .file dtables
  109. 755 ;
  110. 760 ;-------------------------------------------------------------------------
  111. 761 ;          references
  112. 762 ;-------------------------------------------------------------------------
  113. 763 ;
  114. 764 ;the label assembler development system (lads) is documented in
  115. 765 ;
  116. 766 ;richard mansfield, second book of machine language (greensboro, nc:
  117. 767 ;compute! publications, inc., 1984)
  118. 768 ;
  119. 769 ;the c-64 rom routines are generally described in
  120. 770 ;
  121. 771 ;commodore 64 programmer's reference guide (wayne, pa: commodore business
  122. 772 ;machines, inc., 1982), pp. 272-306
  123.  
  124.  
  125.